let app = getApp()
Page({
  /**
   * 页面的初始数据
   */
  data: {
    index: 0,
    url: '',
 
    pageNum: 1,         // 当前页码
    pageSize: 10,       // 每页条数
    pages: 0,           // 总页数
    psychAll: [],       // 问题列表（用空数组初始化，避免字符串类型）
    isLoading: false    // 加载状态锁，防止重复请求
  },
// 点击删除按钮触发的事件
handleDelete(e) {
  // 1. 获取当前问题的ID、索引和发布者信息
  const { id, index } = e.currentTarget.dataset;
  const { psychAll, currentUserAccount } = this.data;
  const currentItem = psychAll[index]; // 当前要删除的问题对象

  // 2. 权限校验（双重保障：前端先判断，后端再校验）
  // if (currentItem.user.account !== currentUserAccount) {
  //   wx.showToast({
  //     title: '您没有权限删除此问题',
  //     icon: 'none',
  //     duration: 2000
  //   });
    // return; // 无权限则终止执行
  // }

  // 3. 二次确认（防止误操作）
  wx.showModal({
    title: '确认删除',
    content: '此操作将永久删除该问题及所有回复，是否继续？',
    cancelText: '取消',
    confirmText: '删除',
    confirmColor: '#ff4d4f', // 红色强调删除按钮
    success: (res) => {
      if (res.confirm) {
        // 4. 用户确认后，调用删除接口
        this.deleteQuestion(id, index);
      }
    }
  });
},

// 调用后端接口删除问题
deleteQuestion(id, index) {
  // 显示加载中状态
  wx.showLoading({
    title: '删除中...',
    mask: true // 防止用户重复点击
  });

  // 调用后端删除接口
  wx.request({
    url: `${this.data.url}psych/${id}`, // 替换为你的后端删除接口
    method: 'DELETE', // 通常删除用DELETE方法，若后端用POST则修改
    success: (resp) => {
      // 5. 根据接口返回结果处理
      if (resp.data.code === 200) {
        // 接口删除成功，更新本地列表（无需重新请求接口，提升体验）
        const newPsychAll = [...this.data.psychAll];
        newPsychAll.splice(index, 1); // 从数组中移除删除的项

        this.setData({
          psychAll: newPsychAll
        }, () => {
          wx.showToast({
            title: '删除成功',
            icon: 'success',
            duration: 1500
          });
        });
      } else {
        // 接口返回失败（如问题不存在、无权限等）
        wx.showToast({
          title: resp.data.msg || '删除失败',
          icon: 'error',
          duration: 2000
        });
      }
    },
    fail: () => {
      // 网络错误处理
      wx.showToast({
        title: '网络错误，请重试',
        icon: 'error',
        duration: 2000
      });
    },
    complete: () => {
      // 无论成功失败，都关闭加载状态
      wx.hideLoading();
    }
  });
},


  // 切换索引（如标签页切换）
  changeIndex(e) {
    const newIndex = e.currentTarget.dataset.index;
    if (this.data.index !== newIndex) {
      // 切换标签时重置数据并重新加载
      this.setData({
        index: newIndex,
        pageNum: 1,
        psychAll: [],
        pages: 0
      }, () => {
        this.getPsych(); // 切换后加载新数据
      });
    }
  },

  // 获取问题列表（分页加载核心方法）
  getPsych() {
    // 防止重复请求（加载中不触发新请求）
    if (this.data.isLoading) return;

    this.setData({ isLoading: true });
    wx.showLoading({ title: '正在加载中' });

    wx.request({
      url: this.data.url + 'psych/page',
      method: 'GET',
      data: {
        pageNum: this.data.pageNum,
        pageSize: this.data.pageSize
      },
      success: (resp) => {
        const { code, data } = resp.data;
        if (code === 200 && data) {
          // 处理数据：首次加载直接赋值，分页加载则合并数组
          const newList = this.data.pageNum === 1 
            ? data.list || []  // 首次加载：直接用新数据
            : [...this.data.psychAll, ...(data.list || [])];  // 分页加载：合并数组

          this.setData({
            psychAll: newList,
            pages: data.pages || 0  // 总页数
          });
        } else {
          // 接口返回异常提示
          wx.showToast({
            title: '数据加载失败',
            icon: 'error'
          });
        }
      },
      fail: () => {
        // 网络错误提示
        wx.showToast({
          title: '网络错误，请重试',
          icon: 'error'
        });
      },
      complete: () => {
        // 无论成功失败，都关闭加载状态
        this.setData({ isLoading: false });
        wx.stopPullDownRefresh();
        wx.hideLoading();
      }
    });
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.setData({
      url: app.globalData.url
    });
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 每次显示页面时，刷新当前页数据（确保显示最新的replyCount）
    // 保留当前页码，只刷新数据，不重置分页
    this.getPsych();
    
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    // 下拉刷新：重置为第一页，清空旧数据
    this.setData({
      pageNum: 1,
      psychAll: [],
      pages: 0
    }, () => {
      this.getPsych(); // 重新加载第一页
    });
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    // 上拉加载更多：判断是否还有下一页
    if (this.data.pageNum >= this.data.pages) {
      wx.showToast({
        title: '已经到底了',
        icon: 'none'
      });
      return;
    }

    // 加载下一页
    this.setData({
      pageNum: this.data.pageNum + 1
    }, () => {
      this.getPsych();
    });
  },

  /**
   * 其他生命周期函数（默认实现）
   */
  onReady() {},
  onHide() {},
  onUnload() {},
  onShareAppMessage() {}
})
